package com.tianqingwl.gsystem.resources.service;

import com.tianqingwl.gsystem.resources.pojo.SysPermission;
import com.tianqingwl.gsystem.resources.vo.MenuInfoVo;
import com.tianqingwl.gsystem.resources.vo.PermissionVo;

import java.util.List;

/**
 * @auther jack,984137184@qq.com
 */
public interface SysPermissionService {
    List<SysPermission> findUserRolePermissionByUsername(String username);

    /**
     * 获取指定用户名的菜单，无限级加载
     * @param username
     * @return
     */
    List<MenuInfoVo> getUserMenuInfoVo(String username);

    /**
     * 获取所有权限资源，没有分页。参数可为空，两者需同时存在或不存在。同时不存在为查询全部，同时存在且roleIn为true时查询roleId拥有的权限。
     * 同时存在且roleIn为false时，查询roleId不拥有的权限
     * @Param roleId
     * @Param roleIn
     * @return
     */
    List<PermissionVo> listPermissionVo(Long roleId,Boolean roleIn);

    /**
     * 获取权限信息
     * @param perId 主键id
     * @return
     */
    SysPermission getSysPermission(Long perId);

    /**
     * 新增与保存
     * @param sysPermission
     */
    SysPermission save(SysPermission sysPermission);

    /**
     * 获取同一级最后一个
     * @param parentId
     * @return
     */
    SysPermission getSysPermissionLast(Long parentId);

    /**
     * 根据id删除
     * @param perId
     */
    void deleteById(Long perId);

    void removeRolePermission(Long roleId, Long[] permissionIds);
}
